import {DialogForm} from 'custom/index'
import {
    addCustomerConsultationRecord,
    getCustomerConsultationRecordDetail,
    updateCustomerConsultationRecord,
    changeMaster, addConsultRecord
} from '../api'
import {
    customerStatusOptions,
    followUpStatusOptions,
    lossReasonOptions,
    customerSourceOptions,
    customerLvlOptions,
    quoteStatusOptiobs,
    feeTypeOptions,
    endCooperation, addRecordOptions
} from '../constant'
import ContactJson from '@/components/form-item/ContactJson.vue'
import {DateRangePicker} from "@/components/form-item";
import dayjs from "dayjs";

const addDialog = new DialogForm('DialogForm')
addDialog
    .title('新增客户咨询记录')
    .postApi(addCustomerConsultationRecord)
    .useGroup('基础信息')
    .useItem('customerName').label('客户名称').required().end()
    .useItem('masterName').label('负责人').end()
    .useCustomItem(ContactJson, 'contactJson').label('客户联系方式').required().end()
    .useSelect('customerStatus', customerStatusOptions).label('客户状态').required().end()
    .useSelect('followUpStatus', followUpStatusOptions).label('跟进状态').required().end()
    .useSelect('lossReason', lossReasonOptions).label('流失原因').end()
    .useSelect('endCooperation', endCooperation).label('结束合作原因').end()
    .upto('DialogForm')
    .useGroup('其他信息')
    .useSelect('customerSource', customerSourceOptions).label('客户来源').required().end()
    .useSelect('customerLvl', customerLvlOptions).label('客户分级').required().end()
    .useDictSelect('platformNo', 'platform').label('店铺平台').setProp('widthLabel', 'platformName').end()
    .useDictSelect('shopTypeNo', 'shopType').label('店铺经营类别').setProp('widthLabel', 'shopTypeName').end()
    .useSelect('quoteStatus', quoteStatusOptiobs).label('报价状态').required().end()
    .useSelect('feeType', feeTypeOptions).label('收费模式').required().end()
    .useItem('feeAmount').label('收费金额').required().end()
    .useRate('importanceLevel').label('重要程度').end()
    .useItem('shopLinkUrl').label('店铺链接').end()
    .useItem('businessAnalysis').label('商机分析').end()
    .useItem('customerDemand').label('客户需求').end()
    .useItem('remark').label('备注').end()
    .useUploadImage('chatHistory').label('聊天记录')

const editDialog = new DialogForm('DialogForm')
editDialog
    .getApi((_, row) => getCustomerConsultationRecordDetail(row.consultId))
    .postApi(updateCustomerConsultationRecord)
    .useGroup('基础信息')
    .useItem('customerName').label('客户名称').required().end()
    .useItem('masterName').label('负责人').end()
    .useCustomItem(ContactJson, 'contactJson').label('客户联系方式').required().end()
    .useSelect('customerStatus', customerStatusOptions).label('客户状态').required().end()
    .useSelect('followUpStatus', followUpStatusOptions).label('跟进状态').required().end()
    .useSelect('lossReason', lossReasonOptions).label('流失原因').end()
    .useSelect('endCooperation', endCooperation).label('结束合作原因').end()
    .upto('DialogForm')
    .useGroup('其他信息')
    .useSelect('customerSource', customerSourceOptions).label('客户来源').required().end()
    .useSelect('customerLvl', customerLvlOptions).label('客户分级').required().end()
    .useDictSelect('platformNo', 'platform').label('店铺平台').setProp('widthLabel', 'platformName').end()
    .useDictSelect('shopTypeNo', 'shopType').label('店铺经营类别').setProp('widthLabel', 'shopTypeName').end()
    .useSelect('quoteStatus', quoteStatusOptiobs).label('报价状态').required().end()
    .useSelect('feeType', feeTypeOptions).label('收费模式').required().end()
    .useItem('feeAmount').label('收费金额').required().end()
    .useRate('importanceLevel').label('重要程度').end()
    .useItem('shopLinkUrl').label('店铺链接').end()
    .useItem('businessAnalysis').label('商机分析').end()
    .useItem('customerDemand').label('客户需求').end()
    .useItem('remark').label('备注').end()
    .useUploadImage('chatHistory').label('聊天记录')


const masterDialog = new DialogForm('DialogForm')

const addRecordDialog = new DialogForm('DialogForm')

masterDialog
    .title('移交负责人')
    .getApi(async (_, row) => ({consultId: row.consultId}))
    .postApi(changeMaster)
    .useGroup()
    .useItem('masterName').label('负责人').required().end()

addRecordDialog
    .title('添加跟进记录')
    .getApi(async (_, row) => ({consultId: row.consultId}))
    .postApi(addConsultRecord)
    .useGroup()
    // .useItem('masterName').label('跟进记录内容').required().end()
    .useItem('recordContent').label('跟进记录内容').setProps({type: 'textarea', autosize: {minRows: 4}}).required().end()
    // .useItem('masterName2').label('跟进方式').required().end()
    .useSelect('recordType', addRecordOptions).label('跟进方式').required().end()
    .useDateTimePicker('recordDate').setProps({type: "datetime"}).setDefault(dayjs().format('YYYY-MM-DD HH:mm:ss')).label('跟进时间').required().end()

export {
    addDialog,
    editDialog,
    masterDialog,
    addRecordDialog
}